<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/*
			 * call和apply
			 * 	这两个方法都是函数对象的方法, 需要通过函数对象来调用
		 	 * 	当对象调用call()和apply()都会调用函数执行
			 * 	在调用call()和apply()可以将一个对象指定为第一个参数
			 * 		此时这个对象将会成为函数执行时的this
			 * 	call()方法可以将实参在对象之后依次传递
			 * 	apply()方法需要将实参封装到一个数组中统一传递
			 */
			function fun(a, b){
				console.log(this.name);
				console.log("a = "+a);
				console.log("b = "+b);
			}
			
			var obj = {
				name: "obj.name",
				sayName: function(a, b){
					console.log(this.name);
					console.log("a = "+a);
					console.log("b = "+b);	
				}
			}
			var obj2 = {name: "obj2.name"}
			fun.call(obj2);
			console.log("\n");
			fun.call(obj2, 2, 3);
			console.log("\n");
			obj.sayName.apply(obj2, [2, 3]);
			
		</script>
	</head>
	<body>
	</body>
</html>
